package br.com.gwsistemas.buonny.controle;

import br.com.gwsistemas.buonny.entidade.IElemento;
import br.com.gwsistemas.buonny.servico.MensagemService;
import br.com.gwsistemas.buonny.servico.MensagemServiceFactory;
import br.com.gwsistemas.buonny.util.Https;
import br.com.gwsistemas.buonny.util.Util;
import br.com.gwsistemas.buonny.util.exception.ExceptionErroValidacao;
import br.com.gwsistemas.buonny.util.objetos.TipoMensagem;
import br.com.gwsistemas.buonny.validacao.ErroValidacao;
import java.io.IOException;
import java.util.HashMap;

public class MensagemControle {

    private HashMap<String, String> caracteresTrataveis = null;
    private static MensagemControle instancia;
    private String caminhoTrataCaracteres = null;

    public void setCaminhoTrataCaracteres(String caminhoTrataCaracteres) {
        this.caminhoTrataCaracteres = caminhoTrataCaracteres;
    }

    public static synchronized MensagemControle getInstancia() {
        if (instancia == null) {
            instancia = new MensagemControle();
        }
        return instancia;
    }

    private MensagemControle()  {
//        this.urlConsumo = urlConsumo;
    }

    public IElemento processar(TipoMensagem tipo, IElemento elemento) throws ErroValidacao, ExceptionErroValidacao, IOException {
        Https.limpar();
        caracteresTrataveis = Util.carregaCaracteresIndevidos(caminhoTrataCaracteres);

        MensagemService mensagem = MensagemServiceFactory.getService(tipo,  elemento, caracteresTrataveis);
        return mensagem.processar();
    }
}